package main

import (
	"fmt"
	"time"
)

const (
	date        = "2006-01-02"
	shortdate   = "06-01-02"
	times       = "15:04:02"
	shorttime   = "15:04"
	datetime    = "2006-01-02 15:04:02"
	newdatetime = "2006/01/02 15~04~02"
	newtime     = "15~04~02"
	dcsotime    = "01-02 15:04:05"
)

func main() {

	// 字符串转时间格式
	thisdate := "2018-11-22 14:14:25"
	timeformatdate, _ := time.Parse(datetime, thisdate)
	fmt.Println(timeformatdate)

	//2017-07-28 15:07:27.5095 +0800 CST

	//2017-07-28 15:07:27
	//tmp := tm.Format("2006-01-02 15:04:05")

	//反向转换2017-07-28 15:07:27 +0000 UTC
	//注意使用time.Parse函数转换的时间点 不是东八区（+0000UTC）
	//tm, _ := time.Parse("2006-01-02 15:04:05", tmp)

	//使用time.ParseInLocation转换的是localtion时间
	//2017-07-28 15:07:27 +0800 UTC

	timestamp := time.Now().Format(time.RFC3339)
	fmt.Println(timestamp)

	fmt.Print(time.Now().UTC().UnixNano())


	//获取本地location
	toBeCharge := "2015-01-01 00:00:00"                             //待转化为时间戳的字符串 注意 这里的小时和分钟还要秒必须写 因为是跟着模板走的 修改模板的话也可以不写
	timeLayout := "2006-01-02 15:04:05"                             //转化所需模板
	loc, _ := time.LoadLocation("Local")                            //重要：获取时区
	theTime, _ := time.ParseInLocation(timeLayout, toBeCharge, loc) //使用模板在对应时区转化为time.time类型
	sr := theTime.Unix()                                            //转化为时间戳 类型是int64
	fmt.Println(theTime)                                            //打印输出theTime 2015-01-01 15:15:00 +0800 CST
	fmt.Println(sr)                                                 //打印输出时间戳 1420041600

	//时间戳转日期
	dataTimeStr := time.Unix(sr, 0).Format(dcsotime) //设置时间戳 使用模板格式化为日期字符串
	fmt.Println(dataTimeStr)

	datetime := time.Now().Format(dcsotime)
	fmt.Println(datetime)

	fmt.Println(time.Now().UTC().UnixNano())
}
